Conventional caching is used to avoid repeating the same computations or the same data transmission. Familiar Internet browsers cache web pages so that these pages do not have to be re-transmitted when a user returns to view the same page a second time. The advantage of caching is readily noticed, as the first time a user navigates to a web page, it typically takes a few seconds for his browser to render the page, yet when a user returns to the same web page, for example, by clicking on a “Back” button, the page is re-rendered immediately. This happens because the user's Internet browser typically caches the web page after it is received from a web server, so that the second time around the page is already available on the user's computer for rendering.
Caching is also used by proxy servers, which are intermediaries between servers on the Internet and a local network of client computers. Proxy servers are often requested to deliver the same web pages to multiple client computers, and thus proxy caching makes it possible to deliver web pages quickly, the second time they are requested.
Caching is also used by computational processors, to save intermediate results that would otherwise need to be computed repeatedly. For example, if a computational expression repeatedly includes a term sin(x), then such term can be cached so that it does not need to be calculated more than once. Many compilers are able to parse source code and determine efficient intermediate results to cache.
Caching is also used in conjunction with content control, used to control what content is delivered to client computers. Content control typically operates by filtering incoming content according to a “policy” that includes one or more rules. For example, URL filtering is used to block “undesirable” web pages from being delivered. Often the determination of what is undesirable is set by a user or by a computer system administrator. In this regard, a policy is the set of rules that determine what URLs to allow or not allow to pass through the filter, and typically only allowable URLs are cached.
A shortcoming of conventional caching as used in conjunction with content control is the inability to support more than one policy. That is, once content gets through a first policy, it is cached, and then it is readily available to users governed by a second policy, even if the second policy would not have allowed the content to pass through the filter.
Using conventional caching, workarounds include disabling the cache, which defeats the advantages of caching, or using multiple caches, one cache per distinct policy, which suffers from redundancy since the same content will typically be stored in multiple caches.